Scroll to navigation

SWAPON(2) Linux Programmer's Manual SWAPON(2)

名前

swapon, swapoff - ファイル/デバイスへのスワップを開始/停止する

書式

#include <unistd.h>
#include <asm/page.h> /* PAGE_SIZE を見つけるため */
#include <sys/swap.h>

int swapon(const char *path, int swapflags);
int swapoff(const char *path);

説明

swapon() は path で指定されたファイルやブロック・デバイスにスワップ領域を設定する。 swapoff() は path で指定されたファイルやブロック・デバイスへのスワップを停止する。

swapon() は swapflags 引き数を取る。 swapflagsSWAP_FLAG_PREFER ビットが設定された場合は、新しいスワップ領域はデフォルトよりも高い 優先度を持つ。 優先度は swapflags に以下のようにコード化されている。

(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

これらの関数は特権プロセス (CAP_SYS_ADMIN ケーパビリティ (capability) を持つプロセス) のみが使用できる。

優先度

それぞれのスワップ領域は高 (high) と低 (low) のどちらかの優先度を持つ。 デフォルトの優先度は低である。 低い優先度の領域において、新しい領域は古い領域よりさらに低い 優先度を持つ。

swapflags が設定されたものは全て高い優先度となり、デフォルトよりも高い優先度を持つ。 使用者はそれらに負でない値が指定できる。 大きな数字は高い優先度を意味する。

高い優先度の領域から順にスワップ・ページとして使用される。 より低い優先度の領域を使用する前により高い優先度の 領域を使い切る。もし二つ以上の領域が同じ優先度を持ち、 使える中で一番高い優先度であれば、それらのページは間で ラウンド・ロビン方式で配分される。

Linux 1.3.6 において、カーネルは通常はこれらの規則に従っている。 しかし例外も存在している。

返り値

成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

(swapon() において) 指定された path が既にスワップ領域として使用されている。
ファイル path は存在するが、通常のファイルもブロック・デバイスも参照していない。 または swapon() において、指定された path のファイルが有効なスワップの署名 (signature) を 含んでいないか、tmpfs のようなインメモリ (in-memory) のファイルシステム 上にある。 または swapoff() において、 path が現在のところスワップ領域でない。
オープンされたファイルの総数がシステムの制限に達した。
ファイル path が存在しない。
スワップを開始するのに十分なメモリーがシステムにない。
使用者が CAP_SYS_ADMIN ケーパビリティを持っていない。 もしくは、最大数のスワップファイルがすでに使用されている (下記の「注意」の節を参照)。

準拠

これらの関数は Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。 二番目の swapflags 引き数は Linux 1.3.2 から導入された。

注意

パーティションやパスは mkswap(8) によって準備されていなければならない。

使用できるスワップファイルの数には上限があり、その上限は カーネル定数 MAX_SWAPFILES で定義される。 MAX_SWAPFILES の値は、カーネル 2.4.10 より前では 8、 カーネル 2.4.10 以降では 32 である。 カーネル 2.6.18 以降では、カーネルが CONFIG_MIGRATION オプションを有効にして作成された場合、 この上限が 2 少ない値 (つまり 30) となる (このカーネルでは、 mbind(2)migrate_pages(2) のページ・マイグレーション機能用にスワップ・テーブルのエントリーが 二つ予約される)。

関連項目

mkswap(8), swapoff(8), swapon(8)

2007-06-22 Linux